/*
中间件注意事项
在路由之前注册
调用next()
可以连续调用
next()不写额外代码
共享req,res对象
*/


const express = require('express')
const app = express()

const mw = function (req, res, next) {
    console.log('这是一个最简单的中间件函数');
    const time = Date.now()
    req.startTime = time
    next()
}
//将mv注册为全局生效的中间件
// app.use(mw)调用是全局生效的中间件
// app.use((req, res, next) => {
//     console.log('这是最简单的中间件函数');
//     //中间件之间共用同一份req和res
//     const time = Date.now()
//     req.startTime = time
//     next()
// })
app.get('/', mw, (req, res) => {
    res.send('Home page.' + req.startTime)
})
app.get('/user', (req, res) => {
    //人为的制造错误
    throw new Error('服务器内部发生了错误！')
    res.send('User page.' + req.startTime)
})
//定义错误级别的中间件，捕获整个项目异常错误，防止程序崩溃
//必须注册在路由之后
app.use((err, req, res, next) => {
    console.log('发生了错误' + err.message);
    res.send('Error' + err.message)
})
app.listen(8765, () => {
    console.log('express server running at localhost:8765');
})